07. Alias
别名是字段的另一个名称,用于序列化和反序列化数据。
你可以通过以下方式指定别名:
alias
on theField
- 必须是个 str
validation_alias
on theField
- 可以是
str
,AliasPath
, orAliasChoices
- 可以是
serialization_alias
on theField
- 必须是个 str
alias_generator
on theConfig
- can be a callable or an instance of
AliasGenerator
- can be a callable or an instance of
For examples of how to use alias
, validation_alias
, and serialization_alias
, see Field aliases.
AliasPath
and AliasChoices
Pydantic provides two special types for convenience when using validation_alias
: AliasPath
and AliasChoices
.
AliasPath
指定某字段的路径来建立别名
from pydantic import BaseModel, Field, AliasPath
class User(BaseModel):
first_name: str = Field(validation_alias=AliasPath('names', 0))
last_name: str = Field(validation_alias=AliasPath('names', 1))
user = User.model_validate({'names': ['John', 'Doe']})
print(user)
#> first_name='John' last_name='Doe'
AliasChoices
指定多个字段作为别名
from pydantic import BaseModel, Field, AliasChoices
class User(BaseModel):
first_name: str = Field(validation_alias=AliasChoices('first_name', 'fname'))
last_name: str = Field(validation_alias=AliasChoices('last_name', 'lname'))
user = User.model_validate({'fname': 'John', 'lname': 'Doe'})
print(user)
#> first_name='John' last_name='Doe'
user = User.model_validate({'first_name': 'John', 'lname': 'Doe'})
print(user)
#> first_name='John' last_name='Doe'